print("--------------10.1.1 读取文件的全部内容-----------------")
from pathlib import Path

# 要使用文件的内容，需要将其路径告知 Python。路径（path）指的是文件
# 或文件夹在系统中的准确位置。Python 提供了 pathlib 模块，让你能够更轻
# 松地在各种操作系统中处理文件和目录。

# pycharm默认以当前文件所在目录为工目录，可以直接写文件名，下面代码在pycharm中可以运行，但是在VSCode中就不行了
# file1 = Path('file1.txt')
# contents1 = file1.read_text()
# print(contents1)

# VSCode 以当前文件的项目根目录为工作目录，所以需要指定层级，下面代码在VSCode中可以运行，但是在pycharm中就不行了
# file2 = Path('./10_file_exception/file2.txt')
# contents2 = file2.read_text()
# print(contents2)

import os

print("当前工作目录:", os.getcwd())
print("目录下文件:", os.listdir())
root = os.getcwd()
file3 = Path(f'{root}\\10_file_exception\\file3.txt')
contents3 = file3.read_text()
print(contents3)

print("--------------10.1.2 相对文件路径和绝对文件路径-----------------")
#  Python只在文件夹工作目录中查找，而不会在其子文件夹中查找。
# 要让 Python 打开不与程序文件位于同一个目录中的文件，需要提供正确的路径。

# 在编程中，指定路径的方式有两种。
# 首先，相对文件路径让 Python 到相对于当前运行的程序所在目录的指定位置去查找。
# 其次，可以将文件在计算机中的准确位置告诉 Python，这样就不用管当前运行的程序存储在什么地方了。
# 这称为绝对文件路径。在相对路径行不通时，可使用绝对路径。
print("--------------相对路径-----------------")
file1 = Path('10_file_exception/file1.txt')
contents1 = file1.read_text()
print(contents1)

print("--------------绝对路径-----------------")
# 绝对路径指的是从根目录开始的路径。
# 使用绝对路径，可读取系统中任何地方的文件。
# 例如，在 Windows 系统中，绝对路径通常以盘符（如 D:\ ）开头，# 后跟文件夹和子文件夹。
# 在 Linux 系统中，绝对路径以斜杠（ / ）开头。

# root = os.getcwd()
# file2 = Path(f'{root}\\10_file_exception\\file2.txt')
# print(file2)
file2 = Path('D:\\Git\\gitee\\python-demo\\10_file_exception\\file2.txt')
contents2 = file2.read_text()
print(contents2)
# 注意：在显示文件路径时，Windows 系统使用反斜杠（\）而不是斜杠（/）。

print("--------------10.1.3 访问文件中的各行-----------------")
# 要以每次一行的方式检查文件，可对文件对象使用 for 循环：
file3 = Path('10_file_exception/file3.txt')
contents3 = file3.read_text()
lines = contents3.splitlines()
for line in lines:
    print(line)

print('--------------10.1.4 使用文件的内容-----------------')
str = ''
for line in lines:
    str += line
print(str)
print(len(str))
# strip() 方法用于移除字符串头尾指定的字符（默认为空格或换行符）或字符序列。
# lstrip() 方法用于移除字符串左端(开头)指定的字符（默认为空格或换行符）或字符序列。
# rstrip() 方法用于移除字符串右端(末尾)指定的字符（默认为空格或换行符）或字符序列。

# 注意：在读取文本文件时，Python 将其中的所有文本都解释为字符串。
# 如果读取的是数，并且要将其作为数值使用，就必须使用 int() 函数将其转换为整数，或者使用 float() 函数将其转换为浮点数。

print("--------------10.1.5 包含 100 万位的大型文件-----------------")
# 在可处理的数据量方面，Python 没有任何限制。只要系统的内存足够大，你想处理多少数据就可以处理多少数据。
str = ''
for line in lines:
    str += line.lstrip()
len_str = str[:50]
print(len_str)
print(f"{str[:50]}...")
print(len(str))

print("--------------10.1.6 圆周率值中包含你的生日吗-----------------")
str = ''
for line in lines:
    str += line.lstrip()
birth_day = input("请输入你的生日(格式：YYYYMMDD): ")
if birth_day in str:
    print("你的生日在圆周率值中！")
else:
    print("你的生日不在圆周率值中！")
